/**
 * 作用域是一个静态概念,是一套规则,在代码编写的时候就已经被确定
 * 词法环境是动态概念,词法环境的结构在代码编译的时候确定,词法环境对象在运行的时候创建
 * 执行上下文在真正运行的时候(进入可执行代码)中才诞生
 * 
 *  你可以这么理解,我们在编写完代码的时候,作用域就被确定下来,
 *  相当于:
 *    我们把作用域想象成一个容器,里面装着变量,但是变量具体的值我们并不知道,只知道我们有这个变量
 *    他会有一根绳子,向上连接着另一个的容器,这就是他的上层作用域,但是在编写代码之后
 *    容器与容器之间是没有串起来的,编译阶段根据词法作用域的outer字段串起来,也就是说outer存什么值——也就是“指向谁”——在编译阶段就根据源码位置写死了，
 *     
 * 
 * 
 * 词法环境的本质是一个规范级对象,它由存放变量的和指向外部词法环境的引用组成,也就是说里面有两个属性
 *  一个属性用来存放变量/函数/形参/声明, 一个属性用来指向外层词法环境,形成链,这个就是作用域链的规则
 *  
 * 
 * 词法环境在代码执行时进行创建,按照预先确定的作用域规则来构建,只要代码进入一个新的作用域边界,就会创建一个新的词法环境。
 * 
 * 每个 Lexical Environment(词法环境) 都精确对应一段代码的作用域。
 * 
 * 
 * 
 */